<?php
class AcesoriasController extends AppController{

    var $name = 'Acesorias';
    var $appModule = 'Actividad';
	var $helpers = array('Html', 'Form', 'Number', 'Codigo','GetList','Ajax', 'TextDate');
	public $components = array('RequestHandler');
	function index() {
		$q = $this->getBusqueda($this->data['Acesoria']['busqueda']);
		$this->set('q', $q);
		$this->Acesoria->recursive = -1;
		$conditions = array(
					'Acesoria.activo'=>true);
		if (!empty($q)){	        
			$conditions = array(
					'Acesoria.activo'=>true,	                    
					'or'=>array('Acesoria.numero_control SIMILAR TO'=>$q,
								'Acesoria.asunto SIMILAR TO'=>"%$q%",
								'Tercero.numero_documento SIMILAR TO'=>"%$q%",
								'Tercero.nombres SIMILAR TO'=>"%$q%"
					)
				);
		}

		$this->paginate['Acesoria'] = array(
				'contain'=>array('Tercero'),
				'conditions'=>$conditions,
				'order'=>array('Acesoria.numero_control'=>'asc')          
			);		        

		$this->set('acesorias', $this->paginate('Acesoria'));
		$this->set('limite', $this->limite);
	}
	
	function add_edit_tercero(&$tercero){
		$this->loadModel('Tercero');
		if(empty($tercero['id'])){
			$this->Tercero->create();
			unset($tercero['id']);
		}		
		$tercero['empresa_id'] = $this->empresaId();
		$tercero['tipo_documento_id'] = 1;		
		$val = $this->Tercero->save($tercero);
		if(!$val){			
			return false;
		}
		$tercero['id'] = empty($tercero['id'])?$this->Tercero->id: $tercero['id'];
		return $tercero['id'] ;
	}
	
	function add($expediente_id = null) {
		if (!empty($this->data)) {
			$usuario = $this->Session->read('Usuario');
			$this->data['Acesoria']['empresa_id'] = $this->empresaId(); // segun sesion
			$this->data['Acesoria']['usuario_creacion_id'] = $this->usuarioId(); // segun sesion
			$this->data['Acesoria']['fecha_creacion'] = 'now()';
			$this->data['Acesoria']['numero_control'] = $this->Acesoria->generateControl();
			
			$apellidos = explode(' ',$this->data['Tercero']['apellidos']);
			$this->data['Tercero']['apellido_paterno'] = $apellidos[0];
			$apellidos[0] = '';
			$this->data['Tercero']['apellido_materno'] = implode(' ',$apellidos);
			$this->data['Tercero']['id'] = $this->data['Acesoria']['tercero_id'];
			if(empty($this->data['Acesoria']['tercero_id'])){
				$this->data['Tercero']['direccion'] = $this->data['Acesoria']['direccion'];				
			}
			$this->data['Acesoria']['tercero_id'] = $this->add_edit_tercero($this->data['Tercero']);
			$this->Acesoria->create();
			if ($this->Acesoria->save($this->data)) {
				$this->Session->setFlash(__('El Acesoria ha sido guardado', true));
				if(empty($expediente_id)){
					$this->redirect(array('action'=>'index'));	
				} else {
					$this->redirect(array('controller'=>'Expedientes', 'action'=>'view',$expediente_id));
				}				
			} 
			else {
				$this->Session->setFlash(__('El Acesoria no ha podido se guardado. Intente nuevamente..', true));
			}
		} else {
			if(!empty($expediente_id)){
				$expediente = $this->Acesoria->Expediente->find('first', array(
								'recursive'=>-1,
								'conditions'=>array('Expediente.id'=>$expediente_id, 'Expediente.activo'=>true)));				
				$this->data['Acesoria']['expediente_id'] = $expediente_id;
				$this->data['Expediente']['numero_expediente'] = $expediente['Expediente']['numero_expediente'];
			}	
		}		
		$this->data['Acesoria']['numero_control'] = $this->Acesoria->generateControl();		
		$this->set('expediente_id', $expediente_id);		
	}

	function edit($id = null, $expediente_id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Orientación no existe', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
			$usuario = $this->Session->read('Usuario');
			$this->data['Acesoria']['usuario_modificacion_id'] = $this->usuarioId(); // segun sesion
			$this->data['Acesoria']['fecha_modificacion'] = 'now()';
			$apellidos = explode(' ',$this->data['Tercero']['apellidos']);
			$this->data['Tercero']['apellido_paterno'] = $apellidos[0];
			$apellidos[0] = '';
			$this->data['Tercero']['apellido_materno'] = implode(' ',$apellidos);
			$this->data['Tercero']['id'] = $this->data['Acesoria']['tercero_id'];
			if(empty($this->data['Acesoria']['tercero_id'])){
				$this->data['Tercero']['direccion'] = $this->data['Acesoria']['direccion'];				
			}
			$this->data['Tercero']['id'] = $this->add_edit_tercero($this->data['Tercero']);
			if ($this->Acesoria->save($this->data)) {
				$this->Session->setFlash(__('El Acesoria ha sido guardado', true));	
				$this->redirect(array('action'=>'index'));		
			} else {
				$this->Session->setFlash(__('El Acesoria no ha podido se guardado. Intente nuevamente.', true));
			}
		}
		else {
			$this->data = $this->Acesoria->find('first', array('conditions'=>array('Acesoria.id'=>$id),	
											'contain'=>array(
													'Tercero', 
													'Expediente',
													'Lugare'
											)));
			$this->data['Tercero']['apellidos'] = $this->data['Tercero']['apellido_paterno'].' '.$this->data['Tercero']['apellido_materno'];			
		}
		$this->set('expediente_id', $expediente_id);		
	}
	
	function delete($id = null, $verbose = true) {	
		if ($this->RequestHandler->isAjax()) {
			Configure::write('debug', 0); //quito el debugger
			$this->autoRender = false;//desabilito el auto dibujado
			$this->autoLayout = false;//desabilito el auto layout
			$this->header('Content-Type: application/json');			
		}	
		if (!$id) {
			if ($verbose){
				if ($this->RequestHandler->isAjax()) {					
					echo json_encode(array('result'=>false , 'mensaje'=>'Id de Acesoria invalido'));
					die;
				} else{
					$this->Session->setFlash(__('Id de Acesoria invalido', true));
					$this->redirect(array('action'=>'index'));	
				} 				
			}
			else return false;
		}
		$this->Acesoria->recursive = -1;
		$data = $this->Acesoria->find('first',array('recursive'=>-1,'conditions'=>array('Acesoria.id'=>$id)));
		$data['Acesoria']['activo']=false;
		$data['Acesoria']['usuario_borrado_id']=$this->usuarioId();
		$data['Acesoria']['fecha_borrado']='now()';
		$result = (boolean)$this->Acesoria->save($data['Acesoria']);
		$mensaje = $result?'El registro fue eliminado':'El registro no fue eliminado';				
		if ($verbose){
			if ($this->RequestHandler->isAjax()) {				
				echo json_encode(array('result'=>$result , 'mensaje'=>$mensaje));
				die;
			} else{
				$this->Session->setFlash(__($mensaje, true));
				$this->redirect(array('action'=>'index'));				
			}
		} else{			
			return (boolean)$result;
		} 
	}

    function process(){// procesa anulaciones y eliminaciones en bloque
        $op = isset($this->params['form']['delete'])?'eliminar':'anular';
        $flag = true;
        $i = 0;
        foreach($this->data as $item){
            if ($item['id']!='0'){
                if(isset($this->params['form']['delete'])){ // eliminar
                    $flag = $this->delete($item['Acesoria']['id'], false);
                }
                if (!$flag){
                    $data = $this->Acesoria->read(null, $item['Acesoria']['id']);
                    $this->Session->setFlash(__("Se ha producido un error al $op el Acesoria #".$data['Acesoria']['codigo'], true));
                    break;
                }
            }
            $i++;
        }
        if ($flag && $i > 0){
            $this->Session->setFlash(__("El proceso de $op Acesoria se ha realizado con exito.", true));
        }
        $this->redirect(array('action'=>'index'));
    }
    
    function buscar($q = null){
        $result = '';
        //estableciendo par?metros de b?squeda
        if(!empty($this->params['url']['q'])){
            $q = $this->params['url']['q'];
        } elseif(!empty($this->params['form']['q'])) {
            $q = $this->params['form']['q'];
        } elseif(!empty($this->data['Acesoria']['q'])){
            $q = $this->data['Acesoria']['q'];
        }

        if(empty($q)){
            $result = array('no ha establecido los par?metros correctamente');
        } else {
            $q = strtoupper($q);
			$this->Acesoria->Behaviors->attach('Containable');
            $result = $this->Acesoria->find('all',array(
                'conditions'=>array(
                    'Acesoria.activo'=>true,
					'OR'=>array(
                        'Acesoria.codigo LIKE'=>$q,
						'Acesoria.descripcion LIKE'=>"$q%"
					)
                ),
                'limit'=>100
            ));
        }

        //para peticiones de autocompletado
        $res = array();
        if(!empty($this->params['url']['autocomplete']) || !empty($this->params['form']['autocomplete'])){
            foreach($result as $value){ 
                $res[] = array('value'=>$value['Acesoria']['id'], 'display'=>'<span style="color:gray;font-size:.9em">'. $value['Acesoria']['codigo'] .'</span><div style="float:right;font-size:.8em" title="'. $value['Acesoria']['razon_social'] .'">'. $value['Acesoria']['razon_social'] .'</div>');
            }
            $result = $res;
        }

        if ($this->RequestHandler->isAjax()){
            $this->_ajaxify($result);
        } else {
            return $result;
        }
    }
	
	function report($fecha1, $fecha2){
		$this->reporte_html();
		$sql = 'SELECT 
					a.id as "Acesoria__id",
					a.codigo as "Acesoria__codigo",
					a.fecha as "Acesoria__fecha",
					l.descripcion as "Lugare__descripcion",
					t.numero_documento  as "Tercero__numero_documento",
					t.apellido_paterno||\' \'||t.apellido_materno||\', \'||t.nombres as "Tercero__nombre_completo",
					a.direccion  as "Tercero__direccion",
					a.asunto as "Acesoria__asunto"
				FROM actividad.acesorias a
				left join maestros.terceros t on t.id = a.tercero_id
				left join expedientes.lugares l on l.id = a.lugar_procedencia_id
				where 
					a.activo = TRUE  
					and a.fecha BETWEEN \'%fecha1\' and \'%fecha2\'
				order by 
					a.codigo asc 
				';
		$acesorias = $this->Acesoria->query(str_replace(array('%fecha1','%fecha2'), array($fecha1, $fecha2),$sql));	
		
		$this->set(compact('acesorias', 'fecha1', 'fecha2'));	
	}
}
?>